home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / fdimg / —‹Œêsrc.lzh / under.c < prev    next >
C/C++ Source or Header  |  1992-12-09  |  5KB  |  216 lines

  1. #include    "3DDEF.H"
  2. #include    "GLOBAL.H"
  3. #include    "FORWARD.H"
  4. #include    "XCODE.H"
  5.  
  6. extern WORD UNDER_FLAG;
  7. extern UINT under_first_x;
  8.  
  9. void
  10. under_print_view(STR s)
  11. {
  12.     B_LOCATE(0,YWIDTH0-2);
  13.     B_PRINT("\x1b[0K");            /* 1行クリア */
  14.     B_PRINT(s);
  15. }
  16.  
  17. /* コントロール行に表示する */
  18. void
  19. under_print00(STR s)
  20. {
  21.     window_abs_loc(0,UNDER_Y);
  22.     B_PRINT(s);
  23. }
  24.  
  25. /* コントロール行に表示する */
  26. void
  27. under_print0(STR s)
  28. {
  29.     window_abs_loc(0,UNDER_Y);
  30.     B_PRINT("\x1b[0K");            /* 1行クリア */
  31.     B_PRINT(s);
  32. }
  33.  
  34. /* コントロール行に表示する */
  35. /* カーソル座標を変えない */
  36. void
  37. under_print(STR s)
  38. {
  39.     under_print0((STR) s);
  40.     work_cursor_cpx();
  41. }
  42.  
  43. /* コントロール行に表示する */
  44. /* カーソル座標を変えない */
  45. /* 1行クリアはしない */
  46. /* 指定位置から書く */
  47. void
  48. under_print_x(int x,UBYTE c)
  49. {
  50.     window_abs_loc(x,UNDER_Y);
  51.     B_PUTC(c);
  52.     work_cursor_cpx();
  53. }
  54.  
  55. /* コントロール行を消す */
  56. void
  57. under_blanc()
  58. {
  59. /*    window_abs_loc(0,UNDER_Y);*/
  60.     B_CONSOL(0,YDOT[UNDER_Y],XWIDTH-1,0);
  61. /*    B_LOCATE(0,0);*/
  62.     B_PRINT("\x1b[\x20;\x20H\x1b[0K");            /* 1行クリア */
  63.     work_cursor_cpx();
  64. }
  65.  
  66. /* 置換、検索用 */
  67. /* コントロール行で入力を行なう */
  68. /* 有効文字長を返す:無効なら-1を返す */
  69. /* ESC と ^G で抜ける */
  70. /* 変換を許す */
  71. int
  72. under_input_esc(STR first_mess,STR string_esc)
  73. {
  74.     UBYTE c;
  75.     UBYTE p[MAXLINE];
  76.  
  77.     UNDER_FLAG = 1;
  78.     under_print0((STR)"");    /* カーソルを下に持っていったまま */
  79.     fep_xf_disp_1(first_mess);
  80.     under_first_x = (B_LOCATE(-1,0) >> 16);
  81.     c = fep_input_esc(p,MAXLINE/2,(STR) "\x1b\x07\x15\x1f");    /* ESC と ^G で抜ける */
  82.     UNDER_FLAG = 0;
  83.     if (c == '\x1b') {        /* 有効 */
  84.         if (strlen(p)) {    /* 何か入っている */
  85.             strcpy(string_esc,p);
  86.         }            /* 何も入っていないならそのまま */
  87.         return(strlen(string_esc));
  88.     } else {            /* ^G:無効 */
  89.         return(-1);
  90.     }
  91. }
  92.  
  93. /* ファイル名入力用 */
  94. /* コントロール行で入力を行なう */
  95. /* 有効文字長を返す:無効なら-2を返す(^G) */
  96. /* 有効文字長が0なら-1を返す */
  97. /* 最後がスペースか ESC だったなら、有効文字長は0とする */
  98. /* CR と ^J と SPACE と ^G で抜ける */
  99. /* 変換を許す */
  100. int
  101. under_input_cr(STR first_mess,STR rets)
  102. {
  103.     UWORD c;
  104.  
  105.     UNDER_FLAG = 1;
  106.     under_blanc();
  107.     under_print0(first_mess);
  108.     under_first_x = (B_LOCATE(-1,0) >> 16);
  109.     c = fep_input_cr(rets,MAXLINE/2,(STR) "\x0a\x0d\x1b\x07\x15\x1f");    /* CR, ESC, SP と ^G で抜ける */
  110.     UNDER_FLAG = 0;
  111.     if ((c == '\x0a') || (c == '\x0d')) {    /* 生で有効 */
  112.         if (strlen(rets)) {    /* 何か入っている */
  113.             return(strlen(rets));
  114.         } else {    /* 何も入っていないなら無効 */
  115.             return(-1);
  116.         }
  117.     } else {        /* ^G,ESC:無効 */
  118.         return(-2);
  119.     }
  120. }
  121.  
  122. #if 0
  123. /* ファイル名入力用 */
  124. /* コントロール行で入力を行なう */
  125. /* 有効文字長を返す:無効なら-1を返す */
  126. /* 最後がスペースか ESC だったなら、有効文字長は0とする */
  127. /* CR と ^J と SPACE と ^G で抜ける */
  128. /* 変換を許す */
  129. int
  130. under_input_cr(STR first_mess,STR rets)
  131. {
  132.     UBYTE c;
  133.  
  134.     UNDER_FLAG = 1;
  135.     under_blanc();
  136.     under_print0(first_mess);
  137.     under_first_x = (B_LOCATE(-1,0) >> 16);
  138.     c = fep_input_cr(rets,MAXLINE/2,(STR) "\x0a\x0d\x20\x1b\x07\x15\x1f");    /* CR, ESC, SP と ^G で抜ける */
  139.     UNDER_FLAG = 0;
  140.     if ((c == '\x0a') || (c == '\x0d')) {    /* 生で有効 */
  141.         if (strlen(rets)) {    /* 何か入っている */
  142.             return(strlen(rets));
  143.         } else {    /* 何も入っていないなら無効 */
  144.             rets[0] = c;
  145.             rets[1] = EOS;
  146.             return(-1);
  147.         }
  148.     } else if (c == '\x1b') {    /* ESC:無効 */
  149.         return(-1);
  150.     } else {            /* ^G:無効 */
  151.         return(-1);
  152.     }
  153. }
  154. #endif
  155.  
  156. /* ファイル名入力用 */
  157. /* コントロール行で入力を行なう */
  158. /* 有効文字長を返す:無効なら-1を返す */
  159. /* 最後が ESC だったなら、有効文字長は0とする */
  160. /* CR と ^J と ESC と SPACE と ^G で抜ける */
  161. /* 変換を許す */
  162. int
  163. under_input_cr_raw(STR first_mess,STR rets)/* 111,,, */
  164. {
  165.     UBYTE w[16];
  166.     int r;
  167.  
  168.     UNDER_FLAG = 1;
  169.     if (FP_MODE[3] == 'H') {    /* 変換モードであった */
  170.         xf_push_cxf1();
  171.         strcpy(w,FP_MODE);
  172.         xf_do_121();
  173.     } else {
  174.         xf_push_cxf1();
  175.         strcpy(w,FP_MODE);
  176.     }
  177.     r = under_input_cr(first_mess,rets);
  178.  
  179.     xf_pop_cxf1();
  180.     fep_mode_set(w);
  181.  
  182.     UNDER_FLAG = 0;
  183.     return(r);
  184.  
  185. /*    r = under_input_cr(first_mess,rets);*/
  186. /*    return(r);*/
  187. }
  188.  
  189. #if 0
  190. /* 置換元、置換先の文字列を入力する */
  191. under_input2()
  192. {
  193.     char ws[MAXLINE];
  194.  
  195.      under_print("Replace [");
  196.     ctr_prints(w_string0);    /* コントロールコードを変換して表示する */
  197.     printf("]<META> :");
  198.     if (under_input(ws,w_string0) > 0) {    /* 有効な文字列を得た 0はダメ */
  199.         strcpy(w_string0,ws);
  200.  
  201.         under_print("widh [");
  202.         ctr_prints(w_string1);    /* コントロールコードを変換して表示する */
  203.         printf("]<META> :");
  204.         if (under_input(ws,w_string1) >= 0) {    /* 有効な文字列を得た 0でも良い */
  205.             strcpy(w_string1,ws);
  206.             insert_cut_all();        /* 整行するして置換に備える */
  207.             under_blanc();
  208.             return(1);
  209.         }
  210.     }
  211.     under_blanc();
  212.     return(0);
  213. }
  214. #endif
  215.  
  216.